package ec.edu.ups.relevo.vista.controlador;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;

import ec.edu.ups.relevo.datos.dao.ContactoDAO;
import ec.edu.ups.relevo.datos.dao.UsuarioDAO;
import ec.edu.ups.relevo.datos.modeloBD.Contacto;
import ec.edu.ups.relevo.datos.modeloBD.Usuario;

@ManagedBean
@ViewScoped
public class ContactosBean
{
	
	/**
	 * Carga un bean de sesion
	 */
//	

	  
	@Inject FacesContext contexto;
	
	//SesionBean sesion=	(SesionBean)contexto.getCurrentInstance().getExternalContext().getSessionMap().get("sesionBean");
    @ManagedProperty(value = "#{sesionBean.getUsr()}")
    private Usuario usr;
    

	@Inject ContactoDAO contactodao;
	@Inject UsuarioDAO usuarioDao;
	private Contacto contact;
	List<Contacto> listContacts;

	@PostConstruct
	public void init() {
		contact = new Contacto();
	}

	public List<Contacto> getListContacts() {
		return listContacts = contactodao.listarSinEliminados(usr);
	}

	public void setListContacts(List<Contacto> listContacts) {
	
		this.listContacts = listContacts;
	}
	
	public Usuario getUsr() {
		return usr;
	}

	public void setUsr(Usuario usr) {
		this.usr = usr;
	}

	public Contacto getContact() {
		return contact;
	}
	
	public void setContact(Contacto contact) {
		System.out.println("seteando contacto");
		this.contact = contact;
	}

	public String guardar() {
		
		System.out.println("Guardando Contacto\n"+contact.toString());
		System.out.println("Usuario:"+usr.getNombre());
		contact.setUsuario(usr);
		contactodao.create(contact);
		mostrarMensaje("Exito! ", " Contacto registrado exitosamente... ");
		contact = new Contacto();
		
		return null;

	}

	private void mostrarMensaje(String titulo, String mensaje) {
		FacesContext context = FacesContext.getCurrentInstance();
		context.addMessage(null, new FacesMessage(titulo, mensaje));

	}
	
	
	private Contacto contactoSelecionado;

	public Contacto getContactoSelecionado() {
		return contactoSelecionado;
	}

	public void setContactoSelecionado(Contacto contactoSelecionado) {
		this.contactoSelecionado = contactoSelecionado;
	}

	public String seleccionarContacto(Contacto ctct) 
	{

		System.out.println("seleccionanadodod");
		this.setContact(ctct);
		return null;
	}

	public String editarContacto() {
		
		System.out.println("Editando");
		try 
		{
			if (contact != null) 
			{
				System.out.println("Editar " + contact.toString());
				contactodao.update(contact);
				contact=new Contacto();
				
			} else
				System.out.println("Nulo");
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		return null;
	}

	public String eliminarcontacto()
	{
		System.out.println("intentando eliminar");
			if(contact!=null)
			{
				contact.setEliminado(true);
				editarContacto();
			}
			else System.out.println("Nulo");
		
		return null;	
	}	
}
